package com.designpatterns.creational.singleton;

/**
 * 懒汉式单例模式
 */
public class LazySingleton {
    //volatile关键字会屏蔽java虚拟机所作的一些代码优化，可能会导致系统的运行效率降低
    private volatile static LazySingleton instance = null;

    private LazySingleton(){}

    public static LazySingleton getInstance(){
        //第一重判断
        if (instance == null){
            //锁定代码块
            synchronized (LazySingleton.class){
                //第二重判断
                if(instance == null){
                    instance = new LazySingleton();//创建单例模式
                }
            }
        }
        return instance;
    }
}
